刚刚 SCP - J 的 C 题
  • 板块学术版
  • 楼主ANDER_
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/10/13 12:23
  • 上次更新2024/10/13 14:07:35
查看原帖
刚刚 SCP - J 的 C 题
1226854
ANDER_楼主2024/10/13 12:23

运行后一直显示程序访问到了一些奇奇怪怪的内存。

#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/priority_queue.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#include<ext/pb_ds/trie_policy.hpp>
#include<bits/stdc++.h>

#define int long long
#define endl "\n"
//#define MSOD
#define IOS

using namespace std;
using namespace __gnu_pbds;
using namespace __gnu_cxx;

const int N = 5e3 + 5, M = 1e6 + 5, MOD = 998424353, INF = 0x7ffffffffff;

inline int getson(bool m, int p) {return m ? p << 1 | 1 : p << 1;}
inline int lowbit(int x) {return x & (-x);}
inline int gcd(int x, int y) {return y == 0 ? x : gcd(y, x % y);}
inline int lcm(int x, int y) {return x * y / gcd(x, y);}
inline int quick_pow(int a, int b) {int res = 1;while(b) {if(b & 1) {res *= a;}a *= a;b >>= 1;}return res;}
inline int quick_pow_mod(int a, int b, int m) {int res = 1;while(b) {if(b & 1) {res = res * a % m;}a = a * a % m;b >>= 1;}return res % m;}

int m, q, x; 
string s;
inline int digit(string t) {
	int res = 0;
	for(auto i : t) {
		if(!isdigit(i)) {
			return -1;
		} else {
			res = res * 10 + i - '0';
		}
	}
	return res;
}
inline int get(string t) {
	if(t.size() == 1 && t[0] == 'x') {
		return x;
	} else if(digit(t) != -1) {
		return digit(t);
	} else {
		int lit, sta, ok = 0;
		for(lit = 2 ; lit < t.size() ; lit ++) {
			if(ok == 0 && t[lit] == '?') {
				break;
			} else if(t[lit] == '?') { 
				ok ++;
			} else if(t[lit] == ':') {
				ok --;
			}
		}
		int num1 = get(t.substr(2, lit - 2));
		sta = lit;
		++lit, ok = 0;
		for( ; ok > -1 && lit < t.size() ; lit ++) {
			if(t[lit] == '?') {
				ok ++;
			} else if(t[lit] == ':') {
				ok --;
			}
		}
		int num2 = get(t.substr(sta + 1, lit - sta - 1));
		int num3 = get(t.substr(lit + 1));
		if(t[1] == '>') {
			return x > num1 ? num2 : num3;
		} else {
			return x < num1 ? num2 : num3;
		}
	}
}
inline void solve() {
	cin>>m>>q>>s;
	while(q --)	{
		cin>>x;
		cout<<get(s)<<endl;
	}
	return;
}
signed main() {
//	freopen("pairing3.in", "r", stdin);
//	freopen("mine.out", "w", stdout);
#ifdef IOS
	ios::sync_with_stdio(false);
	cout.tie(nullptr);
	cin.tie(nullptr);
#endif
	int T = 1;
#ifdef MSOD
	cin>>T;
#endif
	while(T --) {
		solve();
	}
	return 0;
}
2024/10/13 12:23
加载中...