rt, D是TLE了5个,F是WA了6个,实在找不出错了,求助。
D题代码
#include<iostream>
using namespace std;
const int maxn=1e4+10;
bool flag;
int read() {
int num = 0, f = 1;
char chr = getchar();
while (chr < '0' || chr > '9') {
if (chr == '-')
f = -1;
chr = getchar();
}
while (chr >= '0' && chr <= '9') {
num = num * 10 + chr - '0';
chr = getchar();
}
return num * f;
}
void write(int num) {
if (num < 0) {
putchar('-');
num = -num;
}
if (num >= 10)
write(num / 10);
putchar(num % 10 + '0');
}
int main(){
cin.tie(NULL);cout.tie(NULL);
int T=read();
while(T--){
int n=read();
flag=0;
while(n--){
long long x=read();
if(!x){
flag=1;
break;
}
}
printf((flag?"yes\n":"no\n"));
}
return 0;
}
F题的
#include<iostream>
using namespace std;
const int maxn=1500;
long long num[maxn][maxn],ans,sx[maxn],sy[maxn],cnt;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
int n,m;
cin >> n >> m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)cin >> num[i][j];
}
int T;
cin >> T;
while(T--){
int x1,y1,x2,y2;
cin >> x1 >> y1 >> x2 >> y2;
swap(num[x1][y1],num[x2][y2]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
if(num[i][j]>num[i][j-1]&&num[i][j]>num[i][j+1]&&num[i][j]>num[i-1][j]&&num[i][j]>num[i+1][j]){
ans++;
sx[++cnt]=i,sy[cnt]=j;
}
}
cout << ans << "\n";
for(int i=1;i<=ans;i++)cout << sx[i] << " " << sy[i] << "\n";
return 0;
}
救救孩子吧