Posted on

Preprocessors sometimes only do dull string replacement jobs but with amazing effects.

/* Enter your macros here */
#define toStr(a) #a
#define io(v) cin>>v
#define INF 1000000000
#define FUNCTION(name, op) inline void name(int& m, int& c) {m = (m op c) ? m : c;}
#define foreach(v, i) for(int i = 0; i < v.size(); i++)
#include <iostream>
#include <vector>
using namespace std;
#if !defined toStr || !defined io || !defined FUNCTION || !defined INF
#error Missing preprocessor definitions
#endif
FUNCTION(minimum, <)
FUNCTION(maximum, >)
int main(){
int n; cin >> n;
vector<int> v(n);
foreach(v, i) {
io(v)[i];
}
int mn = INF;
int mx = -INF;
foreach(v, i) {
minimum(mn, v[i]);
maximum(mx, v[i]);
}
int ans = mx - mn;
cout << toStr(Result =) <<' '<< ans;
return 0;
}
/* Enter your macros here */ #define toStr(a) #a #define io(v) cin>>v #define INF 1000000000 #define FUNCTION(name, op) inline void name(int& m, int& c) {m = (m op c) ? m : c;} #define foreach(v, i) for(int i = 0; i < v.size(); i++) #include <iostream> #include <vector> using namespace std; #if !defined toStr || !defined io || !defined FUNCTION || !defined INF #error Missing preprocessor definitions #endif FUNCTION(minimum, <) FUNCTION(maximum, >) int main(){ int n; cin >> n; vector<int> v(n); foreach(v, i) { io(v)[i]; } int mn = INF; int mx = -INF; foreach(v, i) { minimum(mn, v[i]); maximum(mx, v[i]); } int ans = mx - mn; cout << toStr(Result =) <<' '<< ans; return 0; }
/* Enter your macros here */

#define toStr(a) #a

#define io(v) cin>>v

#define INF 1000000000

#define FUNCTION(name, op) inline void name(int& m, int& c) {m = (m op c) ? m : c;} 

#define foreach(v, i) for(int i = 0; i < v.size(); i++)

#include <iostream>
#include <vector>
using namespace std;

#if !defined toStr || !defined io || !defined FUNCTION || !defined INF
#error Missing preprocessor definitions
#endif 

FUNCTION(minimum, <)
FUNCTION(maximum, >)

int main(){
	int n; cin >> n;
	vector<int> v(n);
	foreach(v, i) {
		io(v)[i];
	}
	int mn = INF;
	int mx = -INF;
	foreach(v, i) {
		minimum(mn, v[i]);
		maximum(mx, v[i]);
	}
	int ans = mx - mn;
	cout << toStr(Result =) <<' '<< ans;
	return 0;

}

References

  1. https://fenghe.us/the-c-preprocessor/
  2. http://www.cplusplus.com/doc/tutorial/preprocessor/

Leave a Reply

Your email address will not be published. Required fields are marked *