PAT甲級1074【Reversing Linked List(25)】
王道書で逆転の良い方法を見たので,Reverse関数配列の下付きの決定に注意しなければならない.本料理は
coutとprintfの混在
ずっとWA...技術のない涙を残して、コードはとてもこすっていますが、やはり自分の間違いを記録しました.
coutとprintfの混在
ずっとWA...技術のない涙を残して、コードはとてもこすっていますが、やはり自分の間違いを記録しました.
#include
#include
using namespace std;
const int maxn = 1e6+10;
struct Node{
int addr;
int data;
int next;
}node[maxn],mynode[maxn];
void Reverse(int st, int ed, int k){
int mid = (st+ed)/2 - st;
for(int i = 0; i<=mid; i++){
Node tmp;
tmp.data = mynode[i+st].data;
tmp.addr = mynode[i+st].addr;
mynode[st+i].data = mynode[ed-i].data;
mynode[st+i].addr = mynode[ed-i].addr;
mynode[ed-i].data = tmp.data;
mynode[ed-i].addr = tmp.addr;
}
}
int main(){
// freopen("in.txt", "r", stdin);
int st, n, k, addr, data, next, p, cnt = 0;
cin >> st >> n >> k;
for(int i = 0; i> addr >> data >> next;
node[addr].data = data;
node[addr].next = next;
}
p = st;
while(p != -1){
mynode[cnt].data = node[p].data;
mynode[cnt].addr = p;
p = node[p].next;
cnt++;
}
for(int i = 0; iif(i+k-1 >= cnt) break;
Reverse(i, i+k-1, k);
}
for(int i = 0; iprintf("%05d %d ", mynode[i].addr, mynode[i].data);
if(i != cnt-1) printf("%05d
", mynode[i+1].addr);
else printf("-1
");
}
return 0;
}