Azar.099
دوشنبه 24 فروردین 1394, 21:12 عصر
سلام دوستان
این برنامه باید m , n , k بگیره (nتعداد کتاب وارد شده ) (m تعداد عملیات ) (K تعداد کا تا کتاب بالا را rotate میکنه )
عملیات ها هم add و rotate هست
الان مشکلم اینه که برای داده های بزرگ درست کار نمیکنه
به نظرتون مشکل برنامه از چیه ؟
#include <iostream>#include <cstdio>
#include <cstring>
#include <deque>
#include <string>
using namespace std;
int main(){
int N, M, K;
deque<string> Q; int cont;
char s[100];
bool dir = 0; //dir=0 -> pop_back() , dir=1 -> pop_front()
char L[140000][4]; int sz = 0;
char op[1000];
cin >> N >> M >> K;
if (N>K){
for (int i = 0; i<K; ++i){
cin >> s ;
Q.push_back(s);
}
cont = K;
for (int i = N - K - 1; i >= 0; --i){
++sz;
cin >> L[i] ;
}
}
else{
for (int i = 0; i<N; ++i){
cin >> s ;
Q.push_back(s);
}
cont = N;
}
for (int i = 0; i<M; ++i){
cin >> op ;
if (op[0] == 'r') dir ^= 1;
else{
memset(s, 0, sizeof(s));
for (int j = 4; op[j] != ')'; ++j) s[j - 4] = op[j];
if (K != 0){
if (cont == K){
if (dir == 0){
memcpy(L[sz++], Q.back().c_str(),1000);
Q.pop_back();
}
else{
memcpy(L[sz++], Q.front().c_str(), 1000);
Q.pop_front();
}
}
else ++cont;
if (dir == 0) Q.push_front(s);
else Q.push_back(s);
}
else memcpy(L[sz++], s, strlen(s));
}
}
if (dir == 0){
for (int i = 0; i<cont; ++i){
memcpy(L[sz], Q.back().c_str(),1000);
++sz;
Q.pop_back();
}
}
else{
for (int i = 0; i<cont; ++i){
memcpy(L[sz], Q.front().c_str(),1000);
++sz;
Q.pop_front();
}
}
for (int i = sz - 1; i >= 0; --i) cout << L[i] ;
return 0;
}
این برنامه باید m , n , k بگیره (nتعداد کتاب وارد شده ) (m تعداد عملیات ) (K تعداد کا تا کتاب بالا را rotate میکنه )
عملیات ها هم add و rotate هست
الان مشکلم اینه که برای داده های بزرگ درست کار نمیکنه
به نظرتون مشکل برنامه از چیه ؟
#include <iostream>#include <cstdio>
#include <cstring>
#include <deque>
#include <string>
using namespace std;
int main(){
int N, M, K;
deque<string> Q; int cont;
char s[100];
bool dir = 0; //dir=0 -> pop_back() , dir=1 -> pop_front()
char L[140000][4]; int sz = 0;
char op[1000];
cin >> N >> M >> K;
if (N>K){
for (int i = 0; i<K; ++i){
cin >> s ;
Q.push_back(s);
}
cont = K;
for (int i = N - K - 1; i >= 0; --i){
++sz;
cin >> L[i] ;
}
}
else{
for (int i = 0; i<N; ++i){
cin >> s ;
Q.push_back(s);
}
cont = N;
}
for (int i = 0; i<M; ++i){
cin >> op ;
if (op[0] == 'r') dir ^= 1;
else{
memset(s, 0, sizeof(s));
for (int j = 4; op[j] != ')'; ++j) s[j - 4] = op[j];
if (K != 0){
if (cont == K){
if (dir == 0){
memcpy(L[sz++], Q.back().c_str(),1000);
Q.pop_back();
}
else{
memcpy(L[sz++], Q.front().c_str(), 1000);
Q.pop_front();
}
}
else ++cont;
if (dir == 0) Q.push_front(s);
else Q.push_back(s);
}
else memcpy(L[sz++], s, strlen(s));
}
}
if (dir == 0){
for (int i = 0; i<cont; ++i){
memcpy(L[sz], Q.back().c_str(),1000);
++sz;
Q.pop_back();
}
}
else{
for (int i = 0; i<cont; ++i){
memcpy(L[sz], Q.front().c_str(),1000);
++sz;
Q.pop_front();
}
}
for (int i = sz - 1; i >= 0; --i) cout << L[i] ;
return 0;
}